home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cocktail
/
lalr.lha
/
lalr
/
src
/
lalr.mi
< prev
next >
Wrap
Text File
|
1992-08-18
|
3KB
|
110 lines
(* $Id: lalr.mi,v 2.4 1992/08/07 15:22:49 grosch rel $ *)
(* $Log: lalr.mi,v $
* Revision 2.4 1992/08/07 15:22:49 grosch
* allow several scanner and parsers; extend module Errors
*
* Revision 2.3 1992/01/30 14:08:30 grosch
* redesign of interface to operating system
*
* Revision 2.2 1991/11/21 14:53:14 grosch
* new version of RCS on SPARC
*
* Revision 2.1 91/09/23 11:48:28 grosch
* renamed module LALR to Lookahead
*
* Revision 2.0 91/03/08 18:31:52 grosch
* turned tables into initialized arrays (in C)
* moved mapping tokens -> strings from Errors to Parser
* changed interface for source position
*
* Revision 1.2 90/06/12 16:54:36 grosch
* renamed main program to lalr, added { } for actions, layout improvements
*
* Revision 1.1 89/02/24 14:03:37 vielsack
* BeginSource is no longer called
*
* Revision 1.0 88/10/04 14:36:20 vielsack
* Initial revision
*
*)
MODULE lalr;
FROM ArgCheck IMPORT Generate, ArgCheck, GenerateSupport, Pars, Def, TEST;
FROM Automaton IMPORT IsBnf, InitAutomaton;
FROM Check IMPORT CheckForConflicts;
FROM Errors IMPORT eError, ErrorCount, ErrorTable, ErrorMessage, BeginErrors, CloseErrors;
FROM Gen IMPORT GenDefaultActions, GenCode;
FROM Infos IMPORT WriteInfo;
FROM IO IMPORT tFile, StdOutput, WriteNl, WriteS, CloseIO;
FROM Lookahead IMPORT NoConflict, ComputeLALR;
FROM LR IMPORT ComputeLR;
FROM Parser IMPORT Parser;
FROM Path IMPORT InsertPath;
FROM Reduce IMPORT Reduced, TestReduced;
FROM Scanner IMPORT BeginScanner;
FROM Strings IMPORT tString, ArrayToString, StringToInt;
FROM StringMem IMPORT InitStringMemory;
FROM Idents IMPORT InitIdents;
FROM System IMPORT Exit;
FROM TokenTab IMPORT InitTokenTable;
FROM WriteTok IMPORT tLanguage, Language;
CONST ErrorTab = 'ErrorTab';
VAR
errors : INTEGER;
Status : INTEGER;
GoOn : BOOLEAN;
BEGIN
ErrorTable := ErrorTab;
InsertPath (ErrorTable);
InitStringMemory;
InitIdents;
BeginErrors;
ArgCheck;
GoOn := Generate;
IF GoOn THEN
GenDefaultActions;
InitTokenTable;
BeginScanner;
errors := Parser ();
GenerateSupport;
GoOn := ErrorCount [eError] = 0;
END;
IF GoOn THEN
InitAutomaton;
GoOn := IsBnf;
END;
IF GoOn THEN
TestReduced;
GoOn := Reduced;
END;
IF GoOn THEN
ComputeLR;
END;
IF GoOn THEN
ComputeLALR;
GoOn := NoConflict;
END;
IF GoOn THEN
GenCode (Pars, Def);
Status := 0;
ELSE
Status := 1;
END;
CloseErrors;
IF TEST AND GoOn THEN WriteInfo (StdOutput); END;
CloseIO;
Exit (Status);
END lalr.